Co-processors include, e.g., general-purpose graphics processing units (GPGPUs), which are graphics processing units that process data for graphics rendering and also perform non-specialized calculations typically performed by central processing units (CPUs). A graphics processing unit can have many processing cores that process image and graphical data faster than a traditional central processing unit. Migrating data into graphical form and using the graphics processing unit to process the data can result in significant performance improvement. General-purpose graphics processing units have been applied to process large amounts of data used for artificial intelligence applications and complex simulations. Multiple general-purpose graphics processing units can be used in parallel to further increase performance.
In some examples, a computing system can include a central processing unit (CPU), a general-purpose graphics processing unit (GPGPU), system memory or CPU memory associated with the CPU, GPU memory associated with the GPU, a chipset, and a non-volatile storage device (e.g., a solid state drive, SSD) that stores data and program code. The non-volatile storage device and other peripheral devices can be connected to a peripheral component interconnect express (PCIe) bus. The chipset can include a PCIe controller and/or a PCIe switch that controls the transfer of data from the non-volatile storage device and the other peripheral devices to the central processing unit through the PCIe bus, and vice versa. When the general-purpose graphics processing unit needs to access the data stored in the non-volatile storage device, the central processing unit retrieves the data from the non-volatile storage device and stores the data in the CPU memory. The graphics processing unit reads the data from the CPU memory and stores the data in the GPU memory. When data in the GPU memory needs to be written to the non-volatile storage device, the general-purpose graphics processing unit reads the data from the GPU memory and writes the data to the CPU memory. The central processing unit reads the data from the CPU memory and writes the data to the non-volatile storage device.